async functionの中のイベントリスナーの中からasync functionをreturnさせる方法ってありませんか
綾坂こと.icon
そこそこの頻度でこれを引いてPromiseで書き直してるんだが、なんか回避方法があるんじゃないか……?と思って 例
code:test.js
const test_promise = () => {
return new Promise((resolve) => {
document.body.addEventListener("click", event => {
resolve(new Date().toISOString());
}, { "once": true });
});
}
const test_async = async () => {
document.body.addEventListener("click", event => {
return new Date().toISOString();
}, { "once": true });
}
const return_promise = await test_promise();
const return_async = await test_async();
document.body.addEventListener("click", event => {
console.log(return_promise, return_async);
}, { "once": true });
↑をコンソールで実行したあとに<body>を2回クリックする
本当はreturn_promiseもreturn_asyncも時間になってほしいんだけど、return_asyncはundefinedになる
イベントリスナーからの返り値はvoidであり、通常無視されるってGPTさんが言ってたから返り値で情報を受け渡ししようとする「手段の選択」がそもそもおかしいのでは
達成したい「目的」はなんなのだろう
event.targetの中身を返すAsync Functionをつくりたい綾坂こと.icon
IndexedDBはイベントベースだが、これをPromiseベースで扱えるようなラッパーを作ろうとしていた
ただproxyを使ったまあまあ複雑なコードなので、読むのは大変
あ、日記の方で言及されてたか
真似するくらいはいいと思うんだけど……
いやまあ真似するにはややこしいコードではある
test_promiseの方法以外はたぶんないと思いますtakker.icon
自分もその方法でよくpromiseにしてます
ほなしゃーないか……ありがとうございます綾坂こと.icon
async/awaitを使うべきではない()bsahd.icon